Internet has been playing an increasingly important role in our day-to-day life. As an indispensable part of the Internet, software plays an important role in various fields. And Software Engineering has
Software Engineering is a discipline that applies computer science theories and technologies as well as engineering management principles and methods to realize the definition, development, release and maintenance of software products that meet user requirements according to budget and schedule.
Software Engineering Theories
B. Weohm proposed seven basic theories of Software Engineering in 1983. These seven theories are the minimum set that ensure software product quality and development efficiency.
- Manage rigorously with a phased lifecycle plan
- Insist on stage reviews
- Implement strict product control
- Adopt modern programming technologies
- The results should be reviewed clearly
- Members of the development team should be less and more proficient
- Acknowlege the need for continuous improvement in Software Engineering
Goals of Software Engineering
The goal of Software Engineering is to develop software products, that can be modified, effective, reliable, understandable, maintainable, reusable, adaptable, portable, traceable, interoperable and meet the needs of users, under the premise of given cost and schedule.
Modifiability
Allows modifications to the system without increasing the complexity of original system.
Efficiency
The software system can make the most efficient use of the computer’s time and space resources.
Reliability
Can prevent the failure of software system caused by the imperfection of concept, design and structure.
And has the ability to recover the failure of software system caused by improper operation.
Understandability
The system has a clear structure that directly reflects the requirements of the problem.
Maintainability
After the software product is delivered to users, it can be modified to correct latent errors, improve performance and other attributes, and adapt the software product to changing environments.
Reusebility
One or a group of related modules that are relatively independent of concept or function is defined as a component.
The degree to which component can be used in diversified situations is called component reusability.
Adaptability
The difficult degree to which software to satisfy users’s needs under different system constraints.
Portability
The difficult degree to which software is moved from one computer system or environment to another.
Tracebility
The ability to track software design and program forward according to software requirements, or track software requirements backward according to program and software design.
Interoperability
The ability of multiple software elements to communicate with each other and work together to accomplish tasks.
Software Engineering Principles
In order to achieve the goal of software system development, the following principles must be followed in the process of software development:
Abstraction
Modularity
Information Hiding
Localization
Completeness
Consistency
Verifiability